/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Eventos;

import InterfaceEI.JanelaPrincipal;
import InterfaceEI.PanelPrincipal;
import Utils.Utilidades;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.text.DecimalFormat;
import javax.swing.JOptionPane;

/**
 *
 * @author Isabela
 */
public class MouseEventosViga implements MouseListener, MouseMotionListener{

    private PanelPrincipal panelP;
    private boolean fim = false;
    private boolean desenhou = false;

    private JanelaPrincipal frame;
    
    private Utilidades utili = new Utilidades();


    public void setPanelP(PanelPrincipal panelP) {
        this.panelP = panelP;
    }

    public void setFrame(JanelaPrincipal frame) {
        this.frame = frame;
    }

    public MouseEventosViga(PanelPrincipal panelP, JanelaPrincipal frame) {
        this.panelP = panelP;
        this.frame = frame;
    }


    public void mouseClicked(MouseEvent e) {
        int limite = 80;
        if (!desenhou) {
            if (!fim) {
                if ((e.getY() >= 70) && (e.getY() <= panelP.getHeight() - limite)) {
                    if (e.getX() >= 80 && (e.getX() <= panelP.getWidth() - 120)) {
                        panelP.setxInicio(e.getX());
                        panelP.setyInicio(e.getY());

                        panelP.setInicioViga(true);
                        panelP.setFimViga(false);
                        fim = true;

                        desenhou = false;
                        panelP.setDesenhouViga(desenhou);

                        panelP.repaint();
                        panelP.validate();
                    } else {
                        JOptionPane.showMessageDialog(null, "O apoio está fora da area de desenho permitido!");
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "O apoio está fora da area de desenho permitido!");
                }
            } else {
                if (e.getX() >= 80 && (e.getX() <= panelP.getWidth() - 80)) {
                    panelP.setFimViga(true);
                    panelP.setInicioViga(true);
                    fim = false;
                    desenhou = true;
                    panelP.setDesenhouViga(true);

                    frame.setTamViga();
                    frame.setjTTamViga();
                    frame.setInicioViga();

                    frame.getjTDesenhoViga().setSelected(false);

                    panelP.repaint();
                    panelP.validate();
                }
                else {
                    JOptionPane.showMessageDialog(null, "O apoio está fora da area de desenho permitido!");
                }
            }
        }

        if(desenhou){

            //Reação Biapoiada
            if(panelP.getFixoD() || panelP.getDesliF()){

                if((e.getY() > (panelP.getyInicio() - 5)) && (e.getY() < (panelP.getyInicio() + 30))){
                    //Reação em A
                    if((e.getX() > (panelP.getxInicio() - 30)) && (e.getX() < (panelP.getxInicio() + 30))){
                        if(panelP.getReacaoBiapoiadaA()){
                            panelP.setReacaoBiapoiadaA(false);
                        }
                        else{
                            if (frame.getEnableCarga()) {
                                panelP.setReacaoBiapoiadaA(true);
                                panelP.setBiapoiadaA(frame.getDiagramas().getReacaoBiemA());
                            }
                        }
                    }
                    //Reação em B
                    if((e.getX() > (panelP.getxFim() - 30)) && (e.getX() < (panelP.getxFim() + 30))){
                        if(panelP.getReacaoBiapoiadaB()){
                            panelP.setReacaoBiapoiadaB(false);
                        }
                        else{
                            if (frame.getEnableCarga()) {
                                panelP.setReacaoBiapoiadaB(true);
                                panelP.setBiapoiadaB(frame.getDiagramas().getReacaoBiemB());
                            }
                        }
                    }

                    panelP.repaint();
                    panelP.validate();
                }

            }
            //Reação Engastada
            else{
                 if((e.getY() > (panelP.getyInicio() - 15)) && (e.getY() < (panelP.getyInicio() + 15))){
                     if((e.getX() > (panelP.getxInicio() - 5)) && (e.getX() < (panelP.getxInicio() + 5))){

                         if(panelP.getReacaoEngastada()){
                            panelP.setReacaoEngastada(false);
                         }
                         else{
                            if (frame.getEnableCarga()) {
                                panelP.setReacaoEngastada(true);
                                panelP.setValorReacaoE(frame.getDiagramas().getReacaoApoioEngastado());
                            }
                         }

                     }
                 }

                 panelP.repaint();
                 panelP.validate();
            }

        }
    }

    public void mousePressed(MouseEvent e) {
    
    }

    public void mouseReleased(MouseEvent e) {
        
    }

    public void mouseEntered(MouseEvent e) {
        
    }

    public void mouseExited(MouseEvent e) {
       
    }

    public void mouseDragged(MouseEvent e) {
       
    }

    public void mouseMoved(MouseEvent e) {
        if (!desenhou) {
            if (fim) {
                if (e.getX() >= panelP.getxInicio()) {
                    panelP.setxFim(e.getX());

                    panelP.setFimViga(true);

                    panelP.repaint();
                    panelP.validate();
                }
            }
            else {
                
                    panelP.setxInicio(e.getX());
                    panelP.setyInicio(e.getY());

                    panelP.setInicioViga(true);
                    panelP.setFimViga(false);

                    panelP.repaint();
                    panelP.validate();
                
            }
        }
        
        
        if(e.getX() >= panelP.getxInicio() && e.getX() <= panelP.getxFim()){
            frame.getTextFieldXpixel().setText(String.valueOf(e.getX() - panelP.getxInicio()));
            frame.getTextFieldYpixel().setText(String.valueOf(e.getY()));

            DecimalFormat df = new DecimalFormat("0.00");

            double x = utili.conversaoPixelMX(e.getX() - panelP.getxInicio(), panelP.getWidth());
            frame.getTextFieldXreal().setText(String.valueOf(df.format(x)));


            double y = utili.conversaoPixelMY(e.getY(), panelP.getHeight());
            frame.getTextFieldYreal().setText(String.valueOf(df.format(y)));
        }
        else{
            frame.getTextFieldXpixel().setText("XX");
            frame.getTextFieldYpixel().setText("XX");

            DecimalFormat df = new DecimalFormat("0.00");

            double x = utili.conversaoPixelMX(e.getX(), panelP.getWidth());
            frame.getTextFieldXreal().setText("XX");


            double y = utili.conversaoPixelMY(e.getY(), panelP.getHeight());
            frame.getTextFieldYreal().setText("XX");
        }
        
    }

}
